package org.myspring;


/**
 * BeanPostProcessor 是 Spring 框架中的一个接口，它允许开发者在 Spring 容器实例化 Bean 之前或之后对 Bean 进行自定义处理。
 * BeanPostProcessor 接口提供了两个方法：postProcessBeforeInitialization 和 postProcessAfterInitialization，分别在 Bean 实例化之前和之后被调用。
 * <p>
 * 开发者可以使用 BeanPostProcessor 接口来进行各种自定义处理，例如：修改 Bean 的属性、执行任意初始化逻辑、应用 AOP 切面等。
 * Spring 框架本身就使用了大量的 BeanPostProcessor 对 Bean 进行增强和扩展，例如：AutowiredAnnotationBeanPostProcessor、CommonAnnotationBeanPostProcessor 等。
 * <p>
 * 总之，BeanPostProcessor 是 Spring 框架中非常重要的一个扩展点，它可以让开发者在 Bean 实例化过程中进行自定义处理，从而实现更加灵活和强大的功能。
 */
public interface BeanPostProcessor {

    default Object postProcessBeforeInitialization(Object bean, String beanName) {
        return bean;
    }

    default Object postProcessAfterInitialization(Object bean, String beanName) {
        return bean;
    }
}
